package org.github.bcolyn.jmediahash.video;
import com.xuggle.mediatool.IMediaReader;
import com.xuggle.mediatool.MediaListenerAdapter;
import com.xuggle.mediatool.ToolFactory;
import com.xuggle.mediatool.event.IVideoPictureEvent;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
public class XuggleExperiments {
private final static Logger LOGGER = LoggerFactory.getLogger(XuggleExperiments.class);
@Test
public void decodeVid() throws URISyntaxException {
File mediaFile = new File(getClass().getResource("/video/video.flv").toURI());
IMediaReader reader = ToolFactory.makeReader(mediaFile.getAbsolutePath());
reader.setBufferedImageTypeToGenerate(BufferedImage.TYPE_3BYTE_BGR);
reader.addListener(new MediaListenerAdapter() {
public void onVideoPicture(IVideoPictureEvent evt) {
if (evt.getMediaData().isKeyFrame()) {
try {
if (evt.getImage() != null) {
File file = new File("E:\\TEMP\\images\\keyframe-" + System.currentTimeMillis() + ".jpg");
ImageIO.write(evt.getImage(), "jpg", file);
} else {
System.out.println("Dropping keyframe");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
while (reader.readPacket() == null) {
}
}
}